operator precedence parser